package com.castle.fortress.admin.flowable.form.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.castle.fortress.admin.form.dto.QueryConditionDto;

import java.util.List;
import java.util.Map;

/**
 * 表数据管理 服务类
 *
 * @author castle
 * @since 2021-11-10
 */
public interface FlowableFormDataService {

    /**
     * 新增、修改表数据
     * @param tbId
     * @param tbName
     * @param dataMap
     * @return
     */
    boolean saveData(String tbId,String tbName, Map<String,Object> dataMap);

    /**
     * 更新记录状态
     * @param tbId
     * @param id
     * @param approveStatus
     * @return
     */
    boolean updateApproveStatus(String tbId, String id, String approveStatus);

    /**
     * 更新记录状态
     * @param tbId
     * @param id
     * @param processId
     * @return
     */
    void updateProcessId(String tbId, String id, String processId,String engineVersion);

    /**
     * 查询分页数据
     * @param queryConditionDto
     * @return
     */
    IPage<Map<String, Object>> queryPageData(QueryConditionDto queryConditionDto);

    /**
     * 查询列表数据
     * @param queryConditionDto
     * @return
     */
    List<Map<String, Object>> queryListData(QueryConditionDto queryConditionDto);

    /**
     * 查询数据总数
     * @param queryConditionDto
     * @return
     */
    Long queryCount(QueryConditionDto queryConditionDto);

    /**
     * 查询指定表指定id的数据
     * @param tbId
     * @param id
     * @return
     */
    Map<String, Object> queryById(String tbId, String id);

    /**
     * 删除指定表的记录
     * @param tbId 表id
     * @param ids 记录id集合
     * @return
     */
    boolean removeByIds(String tbId, List<Long> ids);

    /**
     * 发送短信验证码
     * @param map
     * key: phone_sms 获取验证码的手机号
     *      String tbId 表id
     * @return
     */
    boolean getCode(Map<String, Object> map);

    /**
     * 校验短信验证码
     * @param tbId 表id
     * @param mobile 获取验证码的手机号
     * @param code 验证码
     * @return
     */
    boolean checkCode(String tbId,String mobile,String code);

    /**
     * 校验字段是否重复,空不校验
     * @param tbId 表单id
     * @param dataMap 校验的数据集
     * @return
     */
    String checkRepeat(String tbId, Map<String,Object> dataMap);

}
